/**
 *  NetLogo Parameter Specification
 *
 * 
 *   @author NetLogo
 */

package model;

/**
 *  Note: the Objects need to be types that NetLogo understands
 *   (e.g. Double, String, LogoList, Boolean...) 
 */
public strictfp abstract class ParameterSpec {
	public String name;
	
	public ParameterSpec(String name)
	{
		this.name = name;
	}
	public String getParameterName()
	{
		return name;
	}

	public abstract Object getValueFromChoice(long choice, long maxNumChoices);
	/**
	 * The special value -1 indicates a continuous parameter.
	 */
	public abstract long choiceCount();
	//	public abstract Object enforceValid(Object obj1); 
	
	
	//// Hmm, for BITSTRING type, we could do crossover at the gene level too. 
	//public abstract T crossover(T obj1, T obj2, MersenneTwisterFast rng);
	
	
	public static ParameterSpec fromString(String s)
	{
		return null;
	}
	
}
